home *** CD-ROM | disk | FTP | other *** search
/ Carousel / CAROUSEL.cdr / mactosh / hc / windoid2.sit / Windoid #2.TXT
Text File  |  1988-11-29  |  18KB  |  356 lines

  1. Windoid
  2.  
  3. Issue #2
  4.  
  5. The Publication  for the Informed HyperCard User Editor:  David Leffler
  6.  
  7. WINDOID provides an opportunity for its readers to contribute to the ongoing growth and excellence of
  8. HyperCard.  With your assistance we can continue to bring to HYPERCard added depth and functionality.
  9. In the back of every issue will be a form for you to keep by your Macintosh.  This form will give you
  10. the unique opportunity to be able to participate directly in the continued development of HyperCard.
  11.  
  12. If you have a bug, suggestion, comment, or just want to know the best way to do something in
  13. HyperCard, you can fill out the form and send it to:
  14.  
  15. AHUG c/o David Leffler, Apple Computer, Inc., MS/27-AQ, 20525 Mariani Ave., Cupertino, CA  95014.
  16.  
  17. Or copy the format and AppleLink it to HYPERBUG$.
  18.  
  19. We will read all the forms returned and address questions that are being asked by HyperCard users.
  20. We will ask the team and provide you with an answer and publish the answers in this newsletter.  In
  21. this way we can gather information and provide for your needs in future versions of HyperCard.
  22.  
  23. WINDOID is trying to make a difference in the way that you work with HyperCard.    We need your
  24. input.  What sort of stacks are you using, what kinds of stacks are you creating, and what are some
  25. of the joys and frustrations you are experiencing.  We really want to know!
  26.  
  27. Bill and Dan are very receptive to user input and this is your chance to make a difference in the
  28. world.
  29.  
  30. In this second issue of WINDOID, we have listened to those who have made a contribution and have
  31. needed information.  In this issue we will address some of the areas that people have questioned us
  32. about and talk in depth about importing text files.
  33.  
  34. Many people have large amounts of data stored in text files.  They would like to move this
  35. information into HyperCard stacks.  There are many ways to import files, and we have included in this
  36. issue what we feel addresses most of your needs.  We have sifted through the many different ways our
  37. users have needed to import files, and we have chosen a few of the most simple and flexible.
  38.  
  39.  
  40. This issue will deal with import button scripts, and in the next issue we will deal with planning the
  41. stack and the Universal Import Button by Gary Bond.
  42.  
  43. When importing text into HyperCard, you must consider how you want the text to appear.  Should it
  44. fill a single field?  Should it create new fields and new cards for each imported text record?  How
  45. much of a field should you fill with text?  Will it appear in scrolling fields?  What kind of text
  46. will be imported?  These are all questions that need to be answered before you begin writing your
  47. script.  This article will explore the two kinds of text and answer some of these questions.
  48.  
  49. Two Kinds of Text
  50.  
  51. For the most part, there are two types of text files.  The first is the common document file which is
  52. usually nothing more than a Macwrite or Microsoft Word document saved as a text file.  All of the
  53. characters in this kind of file are usually in printable ASCII format.
  54.  
  55. The second kind of text file is sometimes generated by a database product such as Omnis or 4th
  56. Dimension.  This kind of file is broken down into two parts.  These parts are records (which are
  57. considered to be separate and distinct groups of information) and fields (which are sub-units of
  58. information within records).  A record can contain several fields with each field capable of holding
  59. a different kind of information.  In a mailing list for example, each person in the mailing list
  60. would be a record in the database while the information about that person such as their name,
  61. address, city, state, and zip would be fields of information within the individual records.  Notice
  62. that each record in this kind of file has the same number of fields.
  63.  
  64. Exploring Import Scripts
  65.  
  66. Below are some common scripts for reading and writing the first kind of text file:
  67.  
  68. Simple read from a text file:
  69.  
  70. on MouseUp
  71.     Open file filename
  72.         Repeat
  73.             Read from file filename for 16384 --fastest/most efficient read
  74.             If it is empty then exit repeat --leave when out of characters
  75.             Put it after var --continue to build a variable with incoming text
  76.             --Could also put after a field but must respect the 32K field limit
  77.         End repeat
  78.     Close file filename end mouseUp
  79.  
  80. Simple write to a text file:
  81.  
  82. on mouseUp
  83.     Open file filename
  84.         Write var to file filename
  85.         --Ex: Write field fieldname to file filename
  86.         --Ex: Write Msg to file filename
  87.         --Ex: Write the selection to file filename
  88.     Close file filename end mouseUp
  89.  
  90. Simple append to a text file:
  91.  
  92. on mouseUp
  93.     Open file filename
  94.         Repeat -- Must read current file info then add new info and write it out.
  95.             Read from file filename for 16384
  96.             If it is empty then exit repeat
  97.             Put it after var1
  98.         End Repeat
  99.     Put var2 & return after var1
  100.     Write var1 to file filename
  101.     Close file filename end mouseUp
  102.  
  103. When dealing with the second type of text file, it's necessary to get a little tricky.  First of all,
  104. to maintain the flavor of the original file, we have to do a little planning.
  105.  
  106. In examining the available list of objects in HyperCard, it becomes obvious that a card would make a
  107. perfect record.  In our mailing list example, each card could represent a different person.  In fact,
  108. with the addition of a few HyperCard text fields to hold field information from the text file, a
  109. stack could serve as a nice representation of our original mailing list database.
  110.  
  111. Planning the Stack
  112.  
  113. Let's assume that our goal is to import our current mailing list into a HyperCard stack.  We first
  114. need to write our mailing list to a text file using the appropriate field and record separater
  115. characters (these are usually TAB for fields and RETURN for records).  This means that there will
  116. need to be a CARRIAGE RETURN character following every record in the text file and a TAB character
  117. following every field.  Many current databases have the ability to export text in this manner.
  118.  
  119. "My mailing list" consists of 143 records (names).  For each person in the list I keep the following
  120. information:
  121.  
  122. 1)  Name 2)  Address 3)  City, State, Zip 4)  Phone 5)  Comment
  123.  
  124. In examining the mailing list, I can see that I have 143 records with each record broken down into
  125. five fields.  So we know that we will end up with 143 cards in the finished stack.  And since each
  126. card can share a similar background, we only need to create a total of five background fields into
  127. which the data for each new card will be placed.
  128.  
  129. We start by creating a new stack with a new background and adding five background fields to that
  130. card.  When that is done, create a card button with the name IMPORT.  Here's what the script for the
  131. button might look like:
  132.  
  133. on mouseUp
  134.     Ask "Import from what file:" with empty
  135.     put it into filename --get filename and store it
  136.     Open file filename -- open the file
  137.     Repeat
  138.         Read from file filename until return -- get 1 record at a time
  139.         If it is empty then exit repeat --exit if there are no more records
  140.         put it into record --put the record text into a variable
  141.         DoMenu "New card" --create a new card
  142.         repeat with count = 1 to 5 --we have five fields so repeat five times
  143.             if offset(tab,record) > 0 then --last part of chunk has no delimiter
  144.                 put char 1 to (offset(tab, record) -l) of record into bkgnd field count
  145.             else
  146.                 put record into bkgnd field count --put last part of chunk
  147.             end if
  148.             delete char 1 to offset(tab,record) of record --zap chunk from record
  149.         end repeat
  150.     end repeat end mouseUp
  151.  
  152. The first part of the script gets the filename, stores it and opens the file.  We then enter a repeat
  153. loop which reads a single record, creates a new card and places the field information in the
  154. appropriate fields.  The inner repeat loop looks for the field delimiter (tab) in the record data and
  155. grabs the chunk of characters from the beginning of the record to that delimiter.  It then inserts
  156. that chunk into the appropriate field.  The chunk is then deleted from the variable and the loop
  157. cycles back through until all chunks are placed in fields.
  158.  
  159. While this approach is reliable, it is also very slow and doesn't account for a number of problems
  160. that might occur along the way.  Consistent with our goal to provide you with the best, the next
  161. WINDOID (Issue #3) continues this article in more depth.  We will present a script for a universal
  162. import button which does both kinds of import (text and data).  To use it, you can type it into any
  163. button script.
  164.  
  165. Power User Tips by Phil Wyman
  166.  
  167. 1.  The DoMenu command will execute DAs.  For example, DoMenu "Calculator".
  168.  
  169. 2.  "It" is a local system variable, not a global.
  170.  
  171. 3.  "Set Cursor" command normally uses the following: "Set cursor to 1" = I-Beam "Set cursor to 2" =
  172. crossbar "Set cursor to 3" = thick crossbar "Set cursor to 4" = watch "Set cursor to 5" - arrow or
  173. browse tool
  174.  
  175. 4.  "Set lockmessages to true" does not work in the message box.  This is because "lockmessages" is
  176. turned off during idle.  Therefore, lockmessages can only be used in a script.
  177.  
  178. 5.  If you don't see the menu bar on an application, Command-Spacebar will allow you to see and use
  179. the menu bar.
  180.  
  181. 6.  Option-O both in and out of Fatbits will show you where opaque white exists on your card if
  182. you're in Paint Tools.
  183.  
  184. 7.  Command-Drag sizes (elongates) a selected picture in HyperCard.  Command-Shift-Drag will enlarge
  185. and shrink the selected picture proportionally.
  186.  
  187. 8.  When you are trying to intercept an arrowkey, you must use the message "on arrowKey" with the
  188. argument "var".  Then you must see if "var" equals "left" or "right" or "up" or "down".  For example:
  189.  
  190.     on arrowkey var
  191.         if var = "left" then exit arrowkey
  192.         go next card
  193.     end arrowkey
  194.  
  195. 9.  If you have to declare many global variables at the beginning of your script, you can declare
  196. them in the same line by separating them with a comma.  For example, "global var1,var2,var3,var4".
  197.  
  198. 10.  You can edit your own patterns in the patern windoid by double-clicking on them.  These changed
  199. patterns will stay with the particular stack and not overlap into other stacks.
  200.  
  201. 11.  If a user-defined function uses the same name as a HyperCard function, HyperCard defaults to the
  202. user-defined function.  For example, if you have a function "average" that you have defined in a
  203. stack script, HyperCard will use that function and not its own built-in average function.
  204.  
  205. 12.  If you want a miniature picture of a card, you can do Copy Card from the menu, then
  206. Command-Shift-V to paste a miniature on your screen.
  207.  
  208. 13.  If you want to set more than one textstyle, you can say:  "Set textstyle of button to
  209. bold,italic,underline".  Also, if you want to not have any textstyle after it has been set to a
  210. certain style, you can say:  "set textstyle of button to plain".
  211.  
  212. 14.  The user pressing Command-Period can stop any script, even if an ANSWER or ASK dialog is on the
  213. screen.
  214.  
  215. 15.  Double-clicking on a word in the Script Editor or in a field selects the entire word.
  216.  
  217. 16.  In a script, you might not know how many levels deep you are in calls to other handlers that
  218. have called you.  "Exit to HyperCard" will pop you out of all sub-messages.
  219.  
  220. 17.  If you have had trouble getting the name of a card, here's the trick.  Go to the card and ask:
  221. "get the short name of this card".  The short name will give you the name of the card, whereas the
  222. long name will give you the entire pathway to the card.
  223.  
  224. 18.  "Repeat" or "Repeat Forever" will continue on until an exit repeat or an exit to HyperCard is
  225. encountered.
  226.  
  227. 19.  In a field, drag with the Command key on a selection of text.  HyperCard will put it into the
  228. message box, and you can then execute it by hitting return.
  229.  
  230. 20.  If the user conacels an "ASK" dialog, HyperCard puts a null into the variable "it".  You cna
  231. therefore check and see if "it" is empty, thereby knowing that the user clicked CANCEL.
  232.  
  233. 21.  Once you have set a button to an icon, you can set the button to not have an icon by saying:
  234. "set icon of button to zero".
  235.  
  236. 22.  Only a locked text field can receive mouse messages such as mouseUp, mouseDown, mouseWithin,
  237. etc.
  238.  
  239. 23.  Two other characters work as HyperCard operators "greater than or equal" and "less than or
  240. equal", as well as the more normal >= and <=.  You get these characters by pressing Option-Greater
  241. Than or Option-Less Than.
  242.  
  243. 24.  You can get rid of your screen altogether by "set visible of cardwindow to false".
  244.  
  245. 25.  Functions are not to be defined within message handlers.
  246.  
  247.  
  248. Programming Functionkeys in HyperTalk By Robin Shank
  249.  
  250. The HyperTalk command "functionkey" allows you to associate a script with any of the function keys on
  251. an extended keyboard.  To program a functionkey, use the following format:
  252.  
  253. on functionkey thekey
  254.     if thekey is 5 then
  255.         --add any script
  256.     end if
  257.     if thekey is 6 then
  258.         put the heapspace -- or whatever
  259.     end if end functionkey
  260.  
  261. You can put the script into a card, background, stack, or home script, depending on how widely you
  262. want your functionkeys to be "detected".
  263.  
  264. The following script will make a functionkey that will automatically move anything selected on the
  265. card into the background.  The beauty of using type "x" with commandkey instead of domenu "cut" is
  266. that it transcends the fact that the Edit menu reflects the object selected.  The command key simply
  267. calls that menu item, so it doesn't matter if it says "cut button" or "cut picture".  I've installed
  268. this script into my Home card, so that I can access it from any stack.
  269.  
  270. On functionkey whatkey
  271.     if whatkey is 6 then
  272.         type "x" with commandkey    -- Cut whatever is selected
  273.         domenu "background"    -- enter the background
  274.         type "v" with commandkey    -- Paste it
  275.         domenu "background"    -- leave the background
  276.     end if end functionkeys
  277.  
  278.  
  279. Icon Maker 2.1
  280.  
  281. As you know, HyperCard comes with many different button ICONs ready for your immediate use.  Just
  282. double-click on any button while in the Button Tool and you will see a dialog box with a button
  283. called Icon.  Clicking on this button allows you to scroll through and choose one of many interesting
  284. icons for your buttons.  One thing users have wanted was the ability to create and install other
  285. icons in their stacks.  Icon Maker solves that problem.  Now you can create Icons and put them into
  286. stacks very easily.  All you do is install Icon Maker in your System file and select it from your DA
  287. menu.  An empty (32 X 32) ICON sized square appears and is capable of copying anything you click on
  288. within its boundaries.  ICN#s (Finder Icons) are created when you just click your mouse and ICONS are
  289. created if you press the command key and click.  ICON resources are what HyperCard uses.  You will be
  290. asked via Standard File where you want the ICON.  If you want to use it only in your personal stacks
  291. you can click on your Home card.  This makes the ICON available to all of your stacks that use your
  292. Home card.  If you want other people to enjoy your newly created ICON, you will have to install it
  293. directly into the stacks you will be sharing.  Pressing on the H key with the Icon Maker selection
  294. square showing gives you HELP information.  Pressing any other key cancels Icon Maker.  IconMaker
  295. allows you to use clipart, or create your own art work and turn it into usable ICONs for sharing in
  296. five clicks of a mouse.  This is a really great utility for HyperCard.  Icon Maker 2.1 was created by
  297. Steve Fine.  I have spoken to Steve and he has allowed me to put Icon Maker 2.1 in the AHUG StackWare
  298. shareware folder.  If you come to the Cupertino AHUG meetings you will be able to take it and see if
  299. it meets your needs just as you are invited to share in all of the stacks that we bring to our
  300. meetings every other Thursday.  If you are out of the area almost all Macintosh public domain
  301. librarys have it.  Steve only asks that if you like it to please send him a contribution so that he
  302. may continue to develop useful tools for you.  His address is
  303.  
  304. Steve Fine 504 Linden Rd. University Park, PA  16802
  305.  
  306. Editorial by David Leffler
  307.  
  308. I hope you have enjoyed reading WINDOID and have found it to be interesting and informative.  We care
  309. enough to take the time to give you the most up-to-date information about HyperCard, and we would
  310. like to make a request for a little of your time.  There is a form that follows this editorial;
  311. please fill it out if you will.  We are very interested in hearing from you.  What sorts of stacks
  312. are you using, what kind of stacks are you creating, and what are your joys and frustrations in using
  313. HyperCard.  You have the unique opportunity to communicate directly with Bill, Dan, and the entire
  314. HyperCard development team.  We really want to know what you would like to see in HyperCard and are
  315. more than willing to give you what you want  What we need to make this happen is your input.  Let us
  316. know what you think.  We can address it in WINDOID or perhaps the next revision of HyperCard.  You
  317. can make a difference in the world by communicating with us.  Don't pass up the opportunity.
  318.  
  319.  
  320. The form:
  321.  
  322. Please use the following form to make a difference in the world:
  323.  
  324. Date: Name: Address: Phone #: Versions of:
  325.  a.  HyperCard:
  326.  b.  Associated software:
  327.  c.  System Software:
  328.     1.  System
  329.     2.  Finder
  330.     3.  ImageWriter file
  331.     4.  LaserWriter file
  332.     5.  Any others Type of Macintosh: Peripherals: Description of problem, suggestions or comments:
  333.  
  334. Please fill this form out as completely as possible and send it to:
  335.  
  336. AHUG c/o David Leffler Apple Computer, Inc. MS/27-AQ 20525 Mariani Ave. Cupertino, CA  95014.
  337.  
  338. Or copy the format and AppleLink it to:
  339.  
  340. HYPERBUG$
  341.  
  342. We thank you for your participation and know that you will be pleased to see your ideas, comments,
  343. and suggestions appear in future issues of WINDOID, the publication for the informed HyperCard user.
  344.  
  345. --
  346.  
  347.  
  348.  
  349. Keith Rollin            amdahl\ Sales Technical Support                      pyramid!sun !apple!keith
  350. Apple Computer        decwrl/
  351.  
  352. Disclaimer:  I read this board for fun, not profit.  Anything I say is from the result of reading
  353. magazines, hacking, and soaking my head in acid.
  354.  
  355.  
  356.